#ifndef __CACHESIMULATOR_H__
#define __CACHESIMULATOR_H__

#include "stdio.h"
#include "stdlib.h"

typedef unsigned long ulong;
typedef unsigned long long ulonglong;

typedef struct inst_number_t
{
        ulong numTotal;
        ulong numLoad;
        ulong numBranch;
        ulong numStore;
        ulong numComp;
}inst_number_s;

typedef struct inst_cycle_t
{
        ulong cycleTotal;
        ulong cycleLoad;
        ulong cycleBranch;
        ulong cycleStore;
        ulong cycleComp;
}inst_cycle_s;

typedef struct results_t
{
        ulong executeTime;

        ulong instRefs;
        ulong dataRefs;

        inst_number_s numInstr;
        inst_cycle_s cycleInstr;

        ulonglong l1HitCount;
        ulonglong l1MissCount;

        ulonglong l2HitCount;
        ulonglong l2MissCount;

}results_s;

void printResults(results_s* results);
void initResults(results_s* results);

#endif /*__CACHESIMULATOR_H__*/
